ফরম্যাটেড এবং আনফরম্যাটেড ইনপুট/আউটপুট (Formatted and Unformatted Input/Output in Fortran)
ফোরট্রান প্রোগ্রামিংয়ে ইনপুট এবং আউটপুট পরিচালনা করার জন্য দুটি প্রধান পদ্ধতি রয়েছে: ফরম্যাটেড এবং আনফরম্যাটেড ইনপুট/আউটপুট। এই দুটি পদ্ধতির মধ্যে প্রধান পার্থক্য হলো আউটপুট বা ইনপুটের ডেটা ফরম্যাট কিভাবে পরিচালিত হয়।
১. ফরম্যাটেড ইনপুট/আউটপুট (Formatted Input/Output)
ফরম্যাটেড ইনপুট এবং আউটপুটের মাধ্যমে ডেটা নির্দিষ্ট ফরম্যাটে প্রিন্ট করা হয় বা গ্রহণ করা হয়। এটি সাধারণত টেক্সট ডেটা বা সংখ্যার আউটপুটের সময় ব্যবহৃত হয়, যেখানে ডেটা একটি নির্দিষ্ট ফরম্যাটে প্রিন্ট বা ইনপুট করতে হয়।
ফরম্যাটেড আউটপুট
ফরম্যাটেড আউটপুটের জন্য write অথবা print স্টেটমেন্ট ব্যবহার করা হয়, যেখানে একটি ফরম্যাট (format) নির্ধারণ করা হয়। ফরম্যাট কন্ট্রোল করে কিভাবে ডেটা আউটপুট হবে (যেমন, সংখ্যা কত দশমিক স্থান পর্যন্ত দেখানো হবে, সংখ্যা কোনভাবে সাজানো হবে ইত্যাদি)।
উদাহরণ (ফরম্যাটেড আউটপুট):
program formatted_output
real :: num1, num2
num1 = 3.14159
num2 = 1234.5678
print *, "Formatted Output:"
print '(F10.3)', num1 ! আউটপুট হবে: 3.142
print '(F10.2)', num2 ! আউটপুট হবে: 1234.57
end program formatted_outputএখানে:
F10.3: ফ্লোটিং পয়েন্ট নম্বর ১০টি স্থান নিয়ে ৩টি দশমিক স্থান সহ প্রিন্ট হবে।F10.2: ফ্লোটিং পয়েন্ট নম্বর ১০টি স্থান নিয়ে ২টি দশমিক স্থান সহ প্রিন্ট হবে।
ফরম্যাটেড ইনপুট
ফরম্যাটেড ইনপুটের জন্য read স্টেটমেন্ট ব্যবহৃত হয়। ইনপুট ডেটার ফরম্যাট স্পেসিফাই করা হয় এবং সেই অনুযায়ী ইনপুট গ্রহণ করা হয়।
উদাহরণ (ফরম্যাটেড ইনপুট):
program formatted_input
real :: num1, num2
print *, "Enter a floating point number:"
read '(F10.3)', num1
print *, "Enter another floating point number:"
read '(F10.2)', num2
print *, "You entered:", num1, "and", num2
end program formatted_inputএখানে:
'(F10.3)': ডেটা ইনপুট করার সময় এটি দশমিকের পর ৩টি স্থান সহ ফ্লোটিং পয়েন্ট সংখ্যার জন্য ১০টি স্থান নির্ধারণ করে।
২. আনফরম্যাটেড ইনপুট/আউটপুট (Unformatted Input/Output)
আনফরম্যাটেড ইনপুট এবং আউটপুটে ডেটা কোন নির্দিষ্ট ফরম্যাট ছাড়াই পড়া বা লেখা হয়। এতে ডেটার সঠিক ফরম্যাটের কোনো নিয়ম থাকে না, অর্থাৎ ডেটা সরাসরি বাইনারি ফরম্যাটে ইনপুট বা আউটপুট হয়, যা দ্রুত এবং কম মেমরি ব্যবহারের জন্য উপযোগী।
আনফরম্যাটেড আউটপুট
আনফরম্যাটেড আউটপুটের জন্য write স্টেটমেন্ট ব্যবহার করা হয়, যেখানে unit এবং form='unformatted' অপশনটি ব্যবহার করা হয়। এটি ডেটাকে বাইনারি ফরম্যাটে লিখে।
উদাহরণ (আনফরম্যাটেড আউটপুট):
program unformatted_output
real :: num1, num2
num1 = 3.14159
num2 = 1234.5678
open(unit=10, file='output.dat', form='unformatted')
write(10) num1, num2
close(10)
end program unformatted_outputএখানে:
form='unformatted': এটি ডেটাকে আনফরম্যাটেড (বাইনারি) আউটপুট ফরম্যাটে লেখে।
আনফরম্যাটেড ইনপুট
আনফরম্যাটেড ইনপুটে read স্টেটমেন্ট ব্যবহার করা হয়, যেখানে form='unformatted' অপশনটি ব্যবহার করা হয়। এটি ডেটা বাইনারি ফরম্যাটে পড়ে।
উদাহরণ (আনফরম্যাটেড ইনপুট):
program unformatted_input
real :: num1, num2
open(unit=10, file='output.dat', form='unformatted')
read(10) num1, num2
print *, "You entered:", num1, "and", num2
close(10)
end program unformatted_inputএখানে:
form='unformatted': এটি বাইনারি ফরম্যাটে ইনপুট ডেটা পড়ে।
৩. ফরম্যাটেড এবং আনফরম্যাটেড আউটপুটের পার্থক্য
| বৈশিষ্ট্য | ফরম্যাটেড ইনপুট/আউটপুট (Formatted I/O) | আনফরম্যাটেড ইনপুট/আউটপুট (Unformatted I/O) |
|---|---|---|
| ফরম্যাট | নির্দিষ্ট ফরম্যাট অনুযায়ী ডেটা আউটপুট বা ইনপুট হয় | কোনো নির্দিষ্ট ফরম্যাট ছাড়াই ডেটা পড়া বা লেখা হয় |
| গতি | তুলনামূলকভাবে ধীর (ফরম্যাটিং করার জন্য বেশি সময় লাগে) | দ্রুত, কারণ ফরম্যাটিং ছাড়াই ডেটা সরাসরি লেখা বা পড়া হয় |
| মেমরি ব্যবহার | বেশি, কারণ ফরম্যাটের জন্য অতিরিক্ত স্থান প্রয়োজন | কম মেমরি ব্যবহার হয় কারণ বাইনারি ফরম্যাটে ডেটা সংরক্ষিত হয় |
| ব্যবহার | যখন ডেটা একটি নির্দিষ্ট ফরম্যাটে আউটপুট বা ইনপুট করতে হয় | যখন বাইনারি ফরম্যাটে দ্রুত ডেটা পড়া বা লেখা প্রয়োজন |
উপসংহার
ফোরট্রান-এ ফরম্যাটেড ইনপুট/আউটপুট ডেটা প্রদর্শন বা ইনপুট করার সময় নির্দিষ্ট ফরম্যাট নিশ্চিত করে, যখন আনফরম্যাটেড ইনপুট/আউটপুট দ্রুত এবং কম মেমরি ব্যবহারের জন্য ব্যবহৃত হয়, যেখানে ফরম্যাটের প্রয়োজন নেই। প্রতিটি পদ্ধতি নির্দিষ্ট প্রয়োজনীয়তার জন্য উপযুক্ত, এবং প্রোগ্রামিংয়ে সঠিক পদ্ধতি নির্বাচন করা গুরুত্বপূর্ণ।
Read more